/**
 * Project Name:JavaBaseReview
 * Package Name:com.xuwei.base.collection
 * author:David
 * Date:2016年6月9日下午3:05:05
 * Copyright (c) 2016, xw123box@126.com All Rights Reserved.
 *
 */
package com.xuwei.base.collection;

import java.io.InputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

import org.junit.Test;

/**
 * HashSet是Set接口的一个子类，主要的特点是：里面不能存放重复元素，而且采用散列的存储方法，所以没有顺序。这里所说的没有顺序是指：
 * 元素插入的顺序与输出的顺序不一致
 * 
 * @author David
 * @since 2016年6月9日 下午3:05:05
 * @version
 * @since JDK 1.6
 */
public class HashSetDemo {

	@Test
	public void test01() {
		Set<String> set = new HashSet<String>();
		set.add("a");
		set.add("b");
		set.add("c");
		set.add("c");
		set.add("d");

		// 使用Iterator输出集合
		Iterator<String> iter = set.iterator();
		while (iter.hasNext()) {
			System.out.print(iter.next() + " ");
		}
		System.out.println();
		// 使用For Each输出结合
		for (String e : set) {
			System.out.print(e + " ");
		}
		System.out.println();

		// 使用toString输出集合
		System.out.println(set);
	}

	@Test
	public void test02() {
		Set<String> words = new HashSet<String>();
		// 通过输入流代开文献
		// 方法1:这个方法不需要抛出异常
		InputStream inStream = this.getClass()
				.getResourceAsStream("test02.txt");
		Scanner in = new Scanner(inStream);
		while (in.hasNext()) {
			words.add(in.next());
		}
		Iterator<String> iter = words.iterator();

		for (int i = 0; i < 5; i++) {
			if (iter.hasNext())
				System.out.println(iter.next());
		}

		System.out.println(words.size());

	}

}
